/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gov.mtc.dgac.licencias.bean;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author German
 */
@Entity
@Table(name = "CLIENTE")
//@NamedQueries({@NamedQuery(name = "ClienteTO.findByCodCliente", query = "SELECT c FROM ClienteTO c WHERE c.codCliente = :codCliente"), @NamedQuery(name = "ClienteTO.findByNumIdDoc", query = "SELECT c FROM ClienteTO c WHERE c.numIdDoc = :numIdDoc"), @NamedQuery(name = "ClienteTO.findByApellidoPat", query = "SELECT c FROM ClienteTO c WHERE c.apellidoPat = :apellidoPat"), @NamedQuery(name = "ClienteTO.findByApellidoMat", query = "SELECT c FROM ClienteTO c WHERE c.apellidoMat = :apellidoMat"), @NamedQuery(name = "ClienteTO.findByNombres", query = "SELECT c FROM ClienteTO c WHERE c.nombres = :nombres"), @NamedQuery(name = "ClienteTO.findBySexo", query = "SELECT c FROM ClienteTO c WHERE c.sexo = :sexo"), @NamedQuery(name = "ClienteTO.findByFechaNac", query = "SELECT c FROM ClienteTO c WHERE c.fechaNac = :fechaNac"), @NamedQuery(name = "ClienteTO.findByEstadoCivil", query = "SELECT c FROM ClienteTO c WHERE c.estadoCivil = :estadoCivil"), @NamedQuery(name = "ClienteTO.findByOcupacion", query = "SELECT c FROM ClienteTO c WHERE c.ocupacion = :ocupacion"), @NamedQuery(name = "ClienteTO.findByDireccion", query = "SELECT c FROM ClienteTO c WHERE c.direccion = :direccion"), @NamedQuery(name = "ClienteTO.findByTelefono", query = "SELECT c FROM ClienteTO c WHERE c.telefono = :telefono"), @NamedQuery(name = "ClienteTO.findByUbigeo", query = "SELECT c FROM ClienteTO c WHERE c.ubigeo = :ubigeo"), @NamedQuery(name = "ClienteTO.findByPais", query = "SELECT c FROM ClienteTO c WHERE c.pais = :pais"), @NamedQuery(name = "ClienteTO.findByEmail", query = "SELECT c FROM ClienteTO c WHERE c.email = :email"), @NamedQuery(name = "ClienteTO.findByEstatura", query = "SELECT c FROM ClienteTO c WHERE c.estatura = :estatura"), @NamedQuery(name = "ClienteTO.findByPeso", query = "SELECT c FROM ClienteTO c WHERE c.peso = :peso"), @NamedQuery(name = "ClienteTO.findByColorOjos", query = "SELECT c FROM ClienteTO c WHERE c.colorOjos = :colorOjos"), @NamedQuery(name = "ClienteTO.findByNacionalidad", query = "SELECT c FROM ClienteTO c WHERE c.nacionalidad = :nacionalidad"), @NamedQuery(name = "ClienteTO.findByObservaciones", query = "SELECT c FROM ClienteTO c WHERE c.observaciones = :observaciones"), @NamedQuery(name = "ClienteTO.findByFechaSuspen", query = "SELECT c FROM ClienteTO c WHERE c.fechaSuspen = :fechaSuspen"), @NamedQuery(name = "ClienteTO.findByMotivoSuspen", query = "SELECT c FROM ClienteTO c WHERE c.motivoSuspen = :motivoSuspen"), @NamedQuery(name = "ClienteTO.findByFechaCrea", query = "SELECT c FROM ClienteTO c WHERE c.fechaCrea = :fechaCrea"), @NamedQuery(name = "ClienteTO.findByFechaMod", query = "SELECT c FROM ClienteTO c WHERE c.fechaMod = :fechaMod"), @NamedQuery(name = "ClienteTO.findByUsuarioCrea", query = "SELECT c FROM ClienteTO c WHERE c.usuarioCrea = :usuarioCrea"), @NamedQuery(name = "ClienteTO.findByUsuarioMod", query = "SELECT c FROM ClienteTO c WHERE c.usuarioMod = :usuarioMod")})
public class ClienteTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "COD_CLIENTE", nullable = false)
    private Long codCliente;
    @Column(name = "NUM_ID_DOC", nullable = false)
    private String numIdDoc;
    @Column(name = "APELLIDO_PAT", nullable = false)
    private String apellidoPat;
    @Column(name = "APELLIDO_MAT", nullable = false)
    private String apellidoMat;
    @Column(name = "NOMBRES", nullable = false)
    private String nombres;
    @Column(name = "SEXO", nullable = false)
    private String sexo;
    @Column(name = "FECHA_NAC", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaNac;
    @Column(name = "ESTADO_CIVIL", nullable = false)
    private String estadoCivil;
    @Column(name = "OCUPACION")
    private String ocupacion;
    @Column(name = "DIRECCION", nullable = false)
    private String direccion;
    @Column(name = "TELEFONO", nullable = false)
    private String telefono;
    @Column(name = "PAIS", nullable = false)
    private String pais;
    @Column(name = "EMAIL")
    private String email;
    @Column(name = "ESTATURA")
    private Double estatura;
    @Column(name = "PESO")
    private Double peso;
    @Column(name = "COLOR_OJOS")
    private String colorOjos;
    @Column(name = "NACIONALIDAD", nullable = false)
    private String nacionalidad;
    @Column(name = "OBSERVACIONES")
    private String observaciones;
    @Column(name = "FECHA_SUSPEN")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaSuspen;
    @Column(name = "MOTIVO_SUSPEN")
    private String motivoSuspen;
    @Column(name = "FECHA_CREA", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCrea;
    @Column(name = "FECHA_MOD")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaMod;
    @Column(name = "USUARIO_CREA", nullable = false)
    private String usuarioCrea;
    @Column(name = "USUARIO_MOD")
    private String usuarioMod;
    @JoinColumn(name = "TIPO_ID_DOC", referencedColumnName = "TIPO_ID_DOC")
    @ManyToOne
    private TipoDocumentoTO tipoIdDoc;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "clienteTO")
    private Collection<ClientelicenciaTO> clientelicenciaTOCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "clienteTO")
    private Collection<ClienteevaluaclicTO> clienteevaluaclicTOCollection;     
    //@OneToMany(cascade = CascadeType.ALL, mappedBy = "clienteTO")
    @Transient
    private Collection<ClienteoperadorTO> clienteoperadorTOCollection;

    private String nombreCompleto;
    private String sfecha_nac;
    private String sfecha_suspen;
    private UbigeoTO ubigeo;
    private Long ubigeoid;

    public Long getUbigeoid() {
        return ubigeoid;
    }

    public void setUbigeoid(Long ubigeoid) {
        this.ubigeoid = ubigeoid;
    }
   
    public Collection<ClienteoperadorTO> getClienteoperadorTOCollection() {
        return clienteoperadorTOCollection;
    }

    public UbigeoTO getUbigeo() {
        return ubigeo;
    }

    public void setUbigeo(UbigeoTO ubigeo) {
        this.ubigeo = ubigeo;
    }

    public void setClienteoperadorTOCollection(Collection<ClienteoperadorTO> clienteoperadorTOCollection) {
        this.clienteoperadorTOCollection = clienteoperadorTOCollection;
    }
    
    public void setNombreCompleto(String nombreCompleto) {
        this.nombreCompleto = nombreCompleto;
    }

    public String getSfecha_nac() {
        return sfecha_nac;
    }

    public void setSfecha_nac(String sfecha_nac) {
        this.sfecha_nac = sfecha_nac;
    }

    public String getSfecha_suspen() {
        return sfecha_suspen;
    }

    public void setSfecha_suspen(String sfecha_suspen) {
        this.sfecha_suspen = sfecha_suspen;
    }
    
    public String getNombreCompleto() {
        return this.apellidoPat+" "+this.apellidoMat+" "+this.nombres;
    }
    
    public ClienteTO() {
    }

    public ClienteTO(Long codCliente) {
        this.codCliente = codCliente;
    }

    public ClienteTO(Long codCliente, String numIdDoc, String apellidoPat, String apellidoMat, String nombres, String sexo, Date fechaNac, String estadoCivil, String direccion, String telefono, UbigeoTO ubigeo, String pais, String nacionalidad, Date fechaCrea, String usuarioCrea) {
        this.codCliente = codCliente;
        this.numIdDoc = numIdDoc;
        this.apellidoPat = apellidoPat;
        this.apellidoMat = apellidoMat;
        this.nombres = nombres;
        this.sexo = sexo;
        this.fechaNac = fechaNac;
        this.estadoCivil = estadoCivil;
        this.direccion = direccion;
        this.telefono = telefono;
        this.ubigeo = ubigeo;
        this.pais = pais;
        this.nacionalidad = nacionalidad;
        this.fechaCrea = fechaCrea;
        this.usuarioCrea = usuarioCrea;
    }

    public Long getCodCliente() {
        return codCliente;
    }

    public void setCodCliente(Long codCliente) {
        this.codCliente = codCliente;
    }

    public String getNumIdDoc() {
        return numIdDoc;
    }

    public void setNumIdDoc(String numIdDoc) {
        this.numIdDoc = numIdDoc;
    }

    public String getApellidoPat() {
        return apellidoPat;
    }

    public void setApellidoPat(String apellidoPat) {
        this.apellidoPat = apellidoPat;
    }

    public String getApellidoMat() {
        return apellidoMat;
    }

    public void setApellidoMat(String apellidoMat) {
        this.apellidoMat = apellidoMat;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public Date getFechaNac() {
        return fechaNac;
    }

    public void setFechaNac(Date fechaNac) {
        this.fechaNac = fechaNac;
    }

    public String getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public String getOcupacion() {
        return ocupacion;
    }

    public void setOcupacion(String ocupacion) {
        this.ocupacion = ocupacion;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getTelefono() {
       String result="";
       if(telefono!=null)result=telefono;
        return result;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

     public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public String getEmail() {
       String result="";
       if(email!=null)result=email;
        return result;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Double getEstatura() {
        return estatura;
    }

    public void setEstatura(Double estatura) {
        this.estatura = estatura;
    }

    public Double getPeso() {
        return peso;
    }

    public void setPeso(Double peso) {
        this.peso = peso;
    }

    public String getColorOjos() {
        return colorOjos;
    }

    public void setColorOjos(String colorOjos) {
        this.colorOjos = colorOjos;
    }

    public String getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(String nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public Date getFechaSuspen() {
        return fechaSuspen;
    }

    public void setFechaSuspen(Date fechaSuspen) {
        this.fechaSuspen = fechaSuspen;
    }

    public String getMotivoSuspen() {
        return motivoSuspen;
    }

    public void setMotivoSuspen(String motivoSuspen) {
        this.motivoSuspen = motivoSuspen;
    }

    public Date getFechaCrea() {
        return fechaCrea;
    }

    public void setFechaCrea(Date fechaCrea) {
        this.fechaCrea = fechaCrea;
    }

    public Date getFechaMod() {
        return fechaMod;
    }

    public void setFechaMod(Date fechaMod) {
        this.fechaMod = fechaMod;
    }

    public String getUsuarioCrea() {
        return usuarioCrea;
    }

    public void setUsuarioCrea(String usuarioCrea) {
        this.usuarioCrea = usuarioCrea;
    }

    public String getUsuarioMod() {
        return usuarioMod;
    }

    public void setUsuarioMod(String usuarioMod) {
        this.usuarioMod = usuarioMod;
    }

    public TipoDocumentoTO getTipoIdDoc() {
        return tipoIdDoc;
    }

    public void setTipoIdDoc(TipoDocumentoTO tipoIdDoc) {
        this.tipoIdDoc = tipoIdDoc;
    }

    public Collection<ClientelicenciaTO> getClientelicenciaTOCollection() {
        return clientelicenciaTOCollection;
    }

    public void setClientelicenciaTOCollection(Collection<ClientelicenciaTO> clientelicenciaTOCollection) {
        this.clientelicenciaTOCollection = clientelicenciaTOCollection;
    }

    public Collection<ClienteevaluaclicTO> getClienteevaluaclicTOCollection() {
        return clienteevaluaclicTOCollection;
    }

    public void setClienteevaluaclicTOCollection(Collection<ClienteevaluaclicTO> clienteevaluaclicTOCollection) {
        this.clienteevaluaclicTOCollection = clienteevaluaclicTOCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codCliente != null ? codCliente.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ClienteTO)) {
            return false;
        }
        ClienteTO other = (ClienteTO) object;
        if ((this.codCliente == null && other.codCliente != null) || (this.codCliente != null && !this.codCliente.equals(other.codCliente))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.dgac.licencias.to.ClienteTO[codCliente=" + codCliente + "]";
    }

}
